/**
 * 调用智谱AI接口
 * @param {string} prompt 用户输入的提示词
 * @param {Array} contextAskList 上下文问题列表（可选）
 * @returns {Promise<string>} AI生成的内容
 */
export async function callAI(prompt, contextAskList = []) {
  try {
    console.log('🤖 调用智谱AI:', prompt)
    console.log("🚀 ~ callAI ~ contextAskList:", contextAskList)

    const response = await fetch('https://open.bigmodel.cn/api/paas/v4/chat/completions', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer ca6a88f0d77243118f645bd726477c24.nA1YnQkFI0Dn3mvg',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        model: 'glm-4.5-air',
        messages: [
          {
            role: 'system',
            content: '你是一个专业的技术助手，请用Markdown格式回答问题，包含标题、列表、代码块等格式。回答要详细且实用。'
          },
          {
            role: 'system',
            content: `这是我之前问过你的问题，上下文:${contextAskList?.join('\n\n')}`
          },
          {
            role: 'user',
            content: prompt
          }
        ],
        temperature: 0.7,
        max_tokens: 1000
      })
    })

    if (!response.ok) {
      throw new Error(`API调用失败: ${response.status} ${response.statusText}`)
    }

    const data = await response.json()
    const aiResponse = data?.choices?.[0].message?.content || data?.choices?.[0].message?.reasoning_content
    console.log('✅ AI响应成功:', aiResponse.substring(0, 100) + '...')
    return aiResponse

  } catch (error) {
    console.error('❌ AI调用错误:', error)
    console.log('🔄 使用降级响应')

    // 降级到模拟响应
    return fallbackResponse(prompt)
  }
}

/**
 * 降级响应函数
 * @param {string} prompt 用户输入
 * @returns {string} 模拟响应
 */
function fallbackResponse(prompt) {
  const responses = {
    // 根据关键词返回不同的模拟响应
    '流程图': `# 流程图设计

## 基本流程
1. 开始
2. 输入数据
3. 处理逻辑
4. 输出结果
5. 结束

这是一个基本的流程图结构，可以根据具体需求进行调整。`,
    
    '架构': `# 系统架构

## 前端架构
- **UI层**: Vue.js + Element UI
- **状态管理**: Vuex
- **路由管理**: Vue Router

## 后端架构
- **API层**: RESTful API
- **业务逻辑层**: Service Layer
- **数据访问层**: DAO Layer

## 数据库
- **关系型数据库**: MySQL
- **缓存**: Redis`,
    
    '算法': `# 算法分析

## 时间复杂度
- **最好情况**: O(1)
- **平均情况**: O(log n)
- **最坏情况**: O(n)

## 空间复杂度
- **辅助空间**: O(1)
- **总空间**: O(n)

## 优化建议
1. 使用哈希表优化查找
2. 预处理数据减少计算
3. 并行处理提高效率`,
    
    '设计': `# 设计方案

## 设计原则
1. **简洁性**: 界面简洁明了
2. **一致性**: 保持设计风格统一
3. **可用性**: 用户体验友好
4. **可访问性**: 支持无障碍访问

## 色彩搭配
- **主色调**: #1890ff
- **辅助色**: #52c41a
- **警告色**: #faad14
- **错误色**: #f5222d

## 布局结构
- 响应式设计
- 栅格系统
- 弹性布局`
  }
  
  // 查找匹配的关键词
  let response = null
  for (const [keyword, content] of Object.entries(responses)) {
    if (prompt.includes(keyword)) {
      response = content
      break
    }
  }
  
  // 如果没有匹配的关键词，返回通用响应
  if (!response) {
    response = `# AI 生成内容

基于您的输入："${prompt}"

## 分析结果
这是AI根据您的提示词生成的内容。当前API调用失败，使用了降级响应。

## 建议
1. 提供更具体的提示词可以获得更好的结果
2. 可以尝试不同的表达方式
3. 结合上下文信息会更有帮助

## 注意事项
- 当前为降级响应
- 请检查网络连接和API配置
- 建议稍后重试

---
*生成时间: ${new Date().toLocaleString()}*`
  }
  
  return response
}

/**
 * 检查AI服务是否可用
 * @returns {Promise<boolean>}
 */
export async function checkAIService() {
  try {
    // 模拟服务检查
    await new Promise(resolve => setTimeout(resolve, 500))
    return true
  } catch (error) {
    console.error('AI服务检查失败:', error)
    return false
  }
}

/**
 * AI配置选项
 */
export const AI_CONFIG = {
  // 智谱AI配置
  apiUrl: 'https://open.bigmodel.cn/api/paas/v4/chat/completions',
  apiKey: 'ca6a88f0d77243118f645bd726477c24.nA1YnQkFI0Dn3mvg',
  model: 'glm-4.5-air',
  maxTokens: 1000,
  temperature: 0.7
}